<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>\</title>
  </head>
  <body>
    <script type="text/javascript">
    console.log("========return 函数的调用 ======== ");
    function add(x,y) {
      console.log("返回后面的代码");
    }
    console.log(add(2,3));

  console.log("======== 递归========");
  function fib(num) {
    if (num > 2) {
      return fib(num-2) + fib(num-1);
    }else{
      return 1;
    }
  }
  console.log(fib(6));


  console.log("========凡是可以使用值得地方，就能使用函数========");
  var option = add;
  console.log(option(5,6));

  function a(op) {
    return op;
  }

  a (add(8,9));
  console.log(a(add(8,9)));
  var b = {
    name : add,
  }
  console.log(b.name(5,6));
  console.log("========name属性========");
  console.log("========name属性返回紧跟在function关键字之后的那个函数名========");
  console.log("========f1========");

function f1() {

}
console.log(f1.name);
var f2 = function() {
  console.log("========f2========");
  console.log(f2.name);
}

  console.log("========length属性========");
  console.log("=======length属性返回函数预期传入的参数个数，即函数定义之中的参数个数========");
  function f4() {
    a();
    b();
    c();
    d();
  }
  console.log(f4.toString());
  console.log("========利用这一点，可以变相实现多行字符串========");
  var f5=function (val){
    var arr=val.toString().split('\n');
  }
  function f6(){
    /*
    这是一个多行注释
    */
  }
  console.log(f5(f6.toString()));
  console.log("========全局变量，在函数外声明的变量========");
  var name="dabang";
  function f7(){
    return name;
  }
  function f8(){
    return name + "is good";
  }
  console.log(f7());
  console.log(f8());
  console.log(f7()+f8());
    </script>
  </body>
</html>
